A finite state machine (FSM) is a representation of an event-driven (reactive) system. In an event-driven system, the system makes a transition from one state (mode) to another prescribed state, provided that the condition defining the change is true. For example, a state machine may be used to represent a car's automatic transmission. The transmission has a number of operating states: park, neutral, drive, reverse, and so on. The system makes a transition from one state to another when a driver shifts the stick from one position to another, for example, from park to neutral.
Designers have used truth tables to represent relationships among the inputs, outputs, and states of an FSM. The resulting table describes the logic necessary to control the behavior of the system under study. Another approach to designing event-driven systems is to model the behavior of the system by describing it in terms of transitions among states. The state that is active is determined based on the occurrence of events under certain conditions. State-transition diagrams (STDs) and bubble diagrams are graphical representations based on this approach.
Another method of modeling FSMs is to create a graphical representation (a statechart) of a finite state machine wherein states and transitions form the basic building blocks of the system.
Existing statechart systems for modeling finite state machines permit a user to embed textual definitions of functions in a statechart and invoke those functions in the statechart. In a textually defined function, the procedure performed by the function is defined by code.